<?php
class Kardex extends AppModel{
        var $name = 'Kardex';

        var $belongsTo = array(
            'Almacene'=>array(
                'className'=>'Almacene',
                'foreignKey'=>'almacen_id'
            ),
            'TipoOperacionesAlmacene'=>array(
                'className'=>'TipoOperacionesAlmacene',
                'foreignKey'=>'operacion_id'
            ),
			'Producto' => array(
                'className' => 'Producto',
                'foreignKey' => 'producto_id'
            )
        );

    /* si la operacion es de salida se consulta DocumentoVenta,
     * si el codigo de documento es 109 se consulta GuiaRemisione
     * si la operacion es de entrada se consulta DocumentoCompra
	 * 0 != es para editar
     */


    /**
     * registrar la operacion en el kardex
     * @param array $kardex (ejercicio_id, periodo_id, almacen_id, lote, producto_id, codigo_documento_id, documento_id, fecha, operacion_id, cantidad, costo, estimado, operacion_almacen_id, detalle_id)
     */
    function generarMovimiento($kardex = array()){
        // inicializando el periodo_id segun fecha
        if(gettype($kardex['fecha']) == 'string'){
                $fecha = $kardex['fecha'];
        $parts = array();
        if (strpos('/', $fecha)){
            $parts = explode('/',$fecha);
        } else if (strpos('-', $fecha)){
            $parts = explode('-',$fecha);
        }
        if (count($parts) > 1)
            $kardex['periodo_id'] = $parts[1];
        } else {
            $kardex['periodo_id'] = $kardex['fecha']['month'];
        }       
        
        $this->bindModel(array(
            	'hasMany'=>array('SaldoAlmacene'=>array('className'=>'SaldoAlmacene'))));
        
        if($this->SaldoAlmacene->moverSaldos(array(
					'ejercicio_id'	=>	$kardex['ejercicio_id'],
					'periodo_id'	=>	$kardex['periodo_id'],
					'almacen_id'	=>	$kardex['almacen_id'],
					'producto_id'	=>	$kardex['producto_id'],
					'cantidad'		=>	$kardex['cantidad'],
					'tipo_movimiento_id'=>$kardex['operacion_almacen_id'] ))){
        	
			$this->create();
	        $data['Kardex']['ejercicio_id']			= $kardex['ejercicio_id'];
	        $data['Kardex']['periodo_id']			= $kardex['periodo_id'];
	        $data['Kardex']['almacen_id']			= $kardex['almacen_id'];        
	        $data['Kardex']['producto_id']			= $kardex['producto_id'];
	        $data['Kardex']['codigo_documento_id']  = $kardex['codigo_documento_id']; // id del documento si es boleta o factuar o Nota credito
	        $data['Kardex']['documento_id']			= $kardex['documento_id'];// id del Doc Ven :D
	        $data['Kardex']['fecha_fisica']         = $kardex['fecha'];
	        $data['Kardex']['operacion_id']			= $kardex['operacion_id'];
	        $data['Kardex']['cantidad']				= $kardex['cantidad'];
	        $data['Kardex']['operacion_almacen_id']	= $kardex['operacion_almacen_id'];
	        $data['Kardex']['detalle_id']			= $kardex['detalle_id'];        
	        $data['Kardex']['fecha_emision']		= $kardex['fecha_emision'];
	        $data['Kardex']['numero_documento']		= $kardex['numero_documento'];
	        $data['Kardex']['observaciones']		= $kardex['observaciones'];
	        if(!$this->save($data)){
	        	return false;
	        }	        					
		} else {
			return false;
		}        
        return true;
    }


   function borrarMovimiento($kardex = array()){
   		$this->bindModel(array(
            	'hasMany'=>array('SaldoAlmacene'=>array('className'=>'SaldoAlmacene'))));
   		if($this->SaldoAlmacene->moverSaldos(array(
					'ejercicio_id'	=>	$kardex['ejercicio_id'],
					'periodo_id'	=>	$kardex['periodo_id'],
					'almacen_id'	=>	$kardex['almacen_id'],
					'producto_id'	=>	$kardex['producto_id'],
					'cantidad'		=>	$kardex['cantidad'],
					'tipo_movimiento_id'=>$kardex['operacion_almacen_id']))){
   			return $this->deleteAll(array(
	            'codigo_documento_id'	=>	$kardex['codigo_documento_id'],            
	            'operacion_id'			=>	$kardex['operacion_id'],
	        	'documento_id'			=>	$kardex['documento_id'],
	        	'detalle_id'			=>	$kardex['detalle_id'],
   				'producto_id'			=>	$kardex['producto_id'],
	        	'cantidad'				=>	$kardex['cantidad'] ));						
		}
		return false;        
    }
}
?>
